﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using QuanLyKho.Server.BLL;
using System.IO;
using DevExpress.Xpf.Core;
using System.Configuration;
using System.Windows.Forms;
using QuanLyKho.CommonControl;
using QuanLyKho.Properties;
using QuanLyKho.Server;
using QuanLyKho.CommonControl;

namespace QuanLyKho
{
    /// <summary>
    /// Interaction logic for frmSaoLuuPhucHoiDuLieu.xaml
    /// </summary>
    public partial class frmSaoLuuPhucHoiDuLieu : DXWindow
    {
        private string pathBackup;
        private CauHinhBLL cauHinh;
        public bool isRestore { get; set; }

        public frmSaoLuuPhucHoiDuLieu()
        {
            InitializeComponent();
            cauHinh = new CauHinhBLL();

            pathBackup = Directory.GetCurrentDirectory().ToString() + @"\BackUp";
            btnDuongDan.Text = pathBackup;

            try
            {
                System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(pathBackup);
                //to retrieve aspx files alone
                FileInfo[] rgFiles = di.GetFiles("*.BAK");
                if(rgFiles.Count() > 0)
                {
                    // Order by name file
                    rgFiles.OrderBy(u=>u.Name);
                    // Get path last file in Directory
                    btnChonFile.Text = pathBackup+ "\\" + rgFiles.Last().Name;
                }
                else
                {
                    DXMessageBox.Show("File phục hồi không tồn tại trong thư mục \n" + pathBackup , "Thông báo lỗi", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }
            catch (Exception)
            {
                DXMessageBox.Show("Lấy thông tin để phục hồi dữ liệu xảy ra lỗi", "Thông báo lỗi", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            
        }

        private void btnSaoLuu_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                string datasource = Settings.Default.DATASOURCE;
                string dbname = Settings.Default.DBNAME;
                string username = Settings.Default.USERNAME;
                string password = Settings.Default.PASSWORD;
                //string fileNameBackup;
                //if (!cauHinh.CheckExistingDatabase())
                //{
                //    DXMessageBox.Show("Dữ liệu không tồn tại trong hệ thống", "Thông báo lỗi", MessageBoxButton.OK, MessageBoxImage.Warning);
                //    return;
                //}
               
                //if (cauHinh.BackupDatabase(dbname, username, password,srvname, btnDuongDan.Text))
                //{
                //    DXMessageBox.Show("Sao lưu dữ liệu thành công \n " + fileNameBackup, "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
                //}
                //else
                //{
                //    DXMessageBox.Show("Sao lưu dữ liệu không thành công", "Thông báo lỗi", MessageBoxButton.OK, MessageBoxImage.Error);
                //}
                string fileNameBackup = cauHinh.BackupDatabase(dbname, username, password, datasource, btnDuongDan.Text);
                DXMessageBox.Show("Sao lưu dữ liệu thành công \n " + fileNameBackup, "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            catch (Exception ex)
            {
                DXMessageBox.Show(ex.ToString(), "Thông báo lỗi", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void btnPhucHoi_Click(object sender, RoutedEventArgs e)
        {
            try
            {

                string datasource = Settings.Default.DATASOURCE;
                string dbname = Settings.Default.DBNAME;
                string username = Settings.Default.USERNAME;
                string password = Settings.Default.PASSWORD;
                cauHinh.RestoreDatabase(dbname, btnChonFile.Text, datasource, username, password);
                isRestore = true;
                if (QuanLyKhoGlobal.MainWindow != null)
                {
                    DXMessageBox.Show("Phục hồi lưu dữ liệu thành công. \nỨng dụng tự động thoát sau câu thông báo này", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
                    // Đóng màn hình sao lưu phục hồi dữ liệu
                    this.Close();
                    // Nếu ở trường hợp đang dùng màn hình chính thì thoát màn hình chính
                    QuanLyKhoGlobal.MainWindow.Close();
                }
                else
                {
                    DXMessageBox.Show("Phục hồi lưu dữ liệu thành công.", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }
            catch (Exception ex)
            {
                DXMessageBox.Show(ex.ToString(), "Thông báo lỗi", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void btnDuongDan_DefaultButtonClick(object sender, RoutedEventArgs e)
        {
            try
            {
                var dialog = new FolderBrowserDialog();
                dialog.SelectedPath = btnDuongDan.Text;
                DialogResult result = dialog.ShowDialog();
                if (result.ToString().Equals("OK"))
                {
                    string duongDan = dialog.SelectedPath;
                    string haiChuDau = duongDan.Substring(0, 2);
                    string nhungChuSau = duongDan.Substring(2, duongDan.Length - 2);
                    btnDuongDan.Text = haiChuDau + nhungChuSau.Replace("\\", @"\");
                }
            }
            catch (Exception ex)
            {
                DXMessageBox.Show(ex.ToString(), "Thông báo lỗi", MessageBoxButton.OK, MessageBoxImage.Error);
                btnDuongDan.Text = string.Empty;
            }
        }

        private void btnChonFile_DefaultButtonClick(object sender, RoutedEventArgs e)
        {
            OpenFileDialog fileDIalog = new OpenFileDialog();
            fileDIalog.InitialDirectory = pathBackup;
            // fileDIalog.Filter = "Image files (*.bmp, *.jpg)|*.bmp;*.jpg|Doc Files (*.doc;*.docx)|*.doc;*.docx";
            fileDIalog.Filter = "Restore files (*.BAK)|*.BAK";
            fileDIalog.AddExtension = true;
            DialogResult result = fileDIalog.ShowDialog();
            if (result.ToString().Equals("OK"))
            {
                btnChonFile.Text = fileDIalog.FileName;
            }
        }
    }
}
